'''指标数据'''

from dataclasses import dataclass, field
from typing import List

@dataclass
class Platform():
    name: str
    count: int
    timestamp: int
    
@dataclass
class Provider():
    name: str
    count: int
    timestamp: int
    
@dataclass
class Plugin():
    name: str
    count: int
    timestamp: int
    
@dataclass
class Command():
    name: str
    count: int
    timestamp: int

@dataclass
class Stats():
    platform: List[Platform] = field(default_factory=list)
    command: List[Command] = field(default_factory=list)
    llm: List[Provider] = field(default_factory=list)
    
@dataclass
class LLMHistory():
    '''LLM 聊天时持久化的信息'''
    provider_type: str
    session_id: str
    content: str
    
@dataclass
class ATRIVision():
    '''Deprecated'''
    id: str
    url_or_path: str
    caption: str
    is_meme: bool
    keywords: List[str]
    platform_name: str
    session_id: str
    sender_nickname: str
    timestamp: int = -1
    
@dataclass
class Conversation():
    '''LLM 对话存储
    
    对于网页聊天，history 存储了包括指令、回复、图片等在内的所有消息。
    对于其他平台的聊天，不存储非 LLM 的回复（因为考虑到已经存储在各自的平台上）。
    '''
    user_id: str
    cid: str
    history: str = ""
    '''字符串格式的列表。'''
    created_at: int = 0
    updated_at: int = 0
    title: str = ""
    persona_id: str = ""